{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导包\n",
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras import datasets as data\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(60000, 28, 28)\n",
      "(60000,)\n",
      "(10000, 28, 28)\n",
      "(10000,)\n"
     ]
    }
   ],
   "source": [
    "# 加载mnist数据集\n",
    "(x_train, y_train), (x_test, y_test) = data.mnist.load_data()\n",
    "\n",
    "# 打印数据集形状\n",
    "print(x_train.shape)\n",
    "print(y_train.shape)\n",
    "print(x_test.shape)\n",
    "print(y_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 图片归一化\n",
    "x_train = x_train/255.0\n",
    "x_test = x_test/255.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "# 可视化训练集的前16张图片，并在图像下面显示类别\n",
    "plt.figure(figsize=(10, 10))\n",
    "for i in range(16):\n",
    "    plt.subplot(4, 4, i+1)\n",
    "    plt.xticks([])\n",
    "    plt.yticks([])\n",
    "    plt.grid(False)\n",
    "    plt.imshow(x_train[i], cmap=plt.cm.binary)\n",
    "    plt.xlabel(y_train[i])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 60000 samples\n",
      "Epoch 1/10\n",
      "60000/60000 [==============================] - 4s 71us/sample - loss: 0.3051 - accuracy: 0.9073\n",
      "Epoch 2/10\n",
      "60000/60000 [==============================] - 3s 54us/sample - loss: 0.1428 - accuracy: 0.9565\n",
      "Epoch 3/10\n",
      "60000/60000 [==============================] - 3s 51us/sample - loss: 0.1116 - accuracy: 0.9656\n",
      "Epoch 4/10\n",
      "60000/60000 [==============================] - 3s 51us/sample - loss: 0.0905 - accuracy: 0.9722\n",
      "Epoch 5/10\n",
      "60000/60000 [==============================] - 3s 52us/sample - loss: 0.0787 - accuracy: 0.9752\n",
      "Epoch 6/10\n",
      "60000/60000 [==============================] - 3s 52us/sample - loss: 0.0674 - accuracy: 0.9790\n",
      "Epoch 7/10\n",
      "60000/60000 [==============================] - 3s 53us/sample - loss: 0.0598 - accuracy: 0.9812\n",
      "Epoch 8/10\n",
      "60000/60000 [==============================] - 3s 53us/sample - loss: 0.0543 - accuracy: 0.9819\n",
      "Epoch 9/10\n",
      "60000/60000 [==============================] - 3s 52us/sample - loss: 0.0475 - accuracy: 0.9838\n",
      "Epoch 10/10\n",
      "60000/60000 [==============================] - 3s 51us/sample - loss: 0.0446 - accuracy: 0.9851\n",
      "10000/1 - 1s - loss: 0.0744 - accuracy: 0.9696\n",
      "\n",
      "Test accuracy 0.9696\n"
     ]
    }
   ],
   "source": [
    "# 创建模型\n",
    "model = keras.Sequential([\n",
    "    keras.layers.Flatten(input_shape=(28, 28)),\n",
    "    keras.layers.Dense(32, activation='relu'),\n",
    "    keras.layers.Dense(64, activation='relu'),\n",
    "    keras.layers.Dense(128, activation='relu'),\n",
    "    keras.layers.Dense(10)\n",
    "])\n",
    "\n",
    "# 编译模型\n",
    "model.compile(optimizer='adam',\n",
    "              loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n",
    "              metrics=['accuracy'])\n",
    "\n",
    "# 训练模型\n",
    "model.fit(x_train, y_train, epochs=10, batch_size=32)\n",
    "\n",
    "# 测试集的准确率\n",
    "test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)\n",
    "print('\\nTest accuracy', test_acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 预测\n",
    "predicted_model = keras.Sequential([model, keras.layers.Softmax()])\n",
    "predicteds = predicted_model.predict(x_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 画图函数\n",
    "def plot_image(i, predictions_array, real_label, img):\n",
    "    plt.grid(False)\n",
    "    plt.xticks([])\n",
    "    plt.yticks([])\n",
    "    plt.imshow(img[i], cmap=plt.cm.binary)\n",
    "    predicted_label = np.argmax(predictions_array)\n",
    "    if predicted_label == real_label[i]:\n",
    "        color = 'blue'\n",
    "    else:\n",
    "        color = 'red'\n",
    "    plt.xlabel(\"{} {:2.0f}% ({})\".format(predicted_label,\n",
    "                                         100 * np.max(predictions_array),\n",
    "                                         real_label),\n",
    "               color=color)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 画值函数\n",
    "def plot_value_array(i, predictions_array, real_labels):\n",
    "    plt.grid(False)\n",
    "    plt.xticks(range(10))\n",
    "    plt.yticks([])\n",
    "    thisplot = plt.bar(range(10), predictions_array, color=\"#777777\")\n",
    "    plt.ylim([0, 1])\n",
    "    predicted_label = np.argmax(predictions_array)\n",
    "    thisplot[predicted_label].set_color('red')\n",
    "    thisplot[real_labels[i]].set_color('blue')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA08AAALICAYAAACn/MvOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdebyUZf3/8ffHAwiIsgjignAKFSG+soiZmqQmhopopqmZ8TWzb6TmkvItc8/cU8soRNPsS4iCG5JK7uHPlX1xRQQjFwTJPQT8/P6YGzvXfWa5hjMz58w5r+fjMQ/nPXPNdV9zmPk4133PNbe5uwAAAAAA+W3S2AMAAAAAgGrA5AkAAAAAIjB5AgAAAIAITJ4AAAAAIAKTJwAAAACI0KrYB3Tt2tVra2vLMBRU0tKlS7Vy5Uqr1PZ43TTMvHnSunX527RqJQ0YUP6xzJo1a6W7dyv/ljJ47TQfzfW105Ten81Vc33toLwq/VlHathrh1rSdOSrOUVPnmprazVz5syGjwqNasiQIRXdHq+bhrGI0r9unVSJP7GZLSv/Vv6D107z0VxfO03p/dlcNdfXDsqr0p91pIa9dqglTUe+msPX9gAAAAAgApMnAAAAAIjA5AkAAAAAIjB5AgAAAIAITJ4AAAAAIAKTJwAAAACIwOQJAAAAACIweQIAAACACEyeAAAAACBCq8YeAABUu6uuuirIn3zySZDnz58f5ClTphTsc/To0UHeY489gnzccccVM0QAAFACHHkCAAAAgAhMngAAAAAgApMnAAAAAIjAmicAKNJRRx0V5MmTJxf1eDMr2GbcuHFBfuihh4L8ta99Lcg9e/YsagwAUMjLL78c5D59+gT5t7/9bZBPOeWUso8JaGwceQIAAACACEyeAAAAACACkycAAAAAiMDkCQAAAAAi8IMRAFBAQ38gYueddw7y8OHDg7xkyZJ6j5k6dWqQFy9eHOQJEyYE+eyzzy5qTABQyJw5c4K8ySbhPvftttuuksMBmgSOPAEAAABABCZPAAAAABCByRMAAAAARGDNEwCkzJw5M8h33XVX3vb9+/cPcnq9UteuXYPcoUOHIH/66af1+tx9992DPG/evCCvWrUq75gAoKHmzp0b5HTtOvzwwys5HKBJ4MgTAAAAAERg8gQAAAAAEZg8AQAAAECEJrnmacqUKUG+4YYbgrztttsGuW3btkE+9thjg7z11lsHeYcddmjoEAE0Y2+++WaQ3T3I6TVO06dPD/I222xT1Pauuuqqere98MILeR8zYsSIorYBAIUsWLAgyNddd12Qv/e971VyOECTxJEnAAAAAIjA5AkAAAAAIjB5AgAAAIAITXLN01lnnRXkpUuXFvX4cePGBXmLLbYIcr9+/TZqXKW0/fbbB3nMmDFBHjJkSCWHA6COQw45JMiLFy8O8uabbx7kLl26NGh7t912W73bsp37CQDK6aWXXgryRx99FOSjjjqqksMBmiSOPAEAAABABCZPAAAAABCByRMAAAAARGiSa55uvPHGIM+bNy/I6TVLzz//fJDnzJkT5MceeyzITz/9dJB79uwZ5Ndffz16rBu0bt06yF27dg1y+rwx6TGk10Cx5gloOnr16lXS/q688sogv/zyywUfs/vuu+fNANBQV1xxRZBra2uDzGcTgCNPAAAAABCFyRMAAAAARGDyBAAAAAARmuSap69//et5c9rw4cPz3r969eogp9dEpb/D+9xzzxUaYj2bbrppkPv06RPknXfeOcjvvvtukHv37l30NgFUh2nTpgX5vPPOC/KaNWvqPaZ79+5Bvuyyy4Lcvn37Eo0OQEuU7Rya6c8/6c8ym222WTmHBFQFjjwBAAAAQAQmTwAAAAAQgckTAAAAAERokmueSq1z585B3m+//fK2L7TGKsYdd9wR5PS6q1122SXIRx99dIO3CaBpmjlzZpCzrXFKO+qoo4L8ta99raRjAtCyPf744wXbdOvWrQIjAaoLR54AAAAAIAKTJwAAAACIwOQJAAAAACK0iDVPlbBixYog//jHPw6yuwc5fZ6XLl26lGdgACrusMMOC/L06dPzth81alS92y6++OKSjgkA6po/f37BNmPGjKnASIDqwpEnAAAAAIjA5AkAAAAAIjB5AgAAAIAIrHkqkbFjxwY5vQaqU6dOQe7Tp0/ZxwSgMt58880gP/nkk0FOn9cpfe6Uc845p16fHTp0KNHoAEB66qmngnzzzTfXazNo0KAgDxs2rKxjAqoRR54AAAAAIAKTJwAAAACIwOQJAAAAACKw5mkjPfHEE0G+7LLL8ra/5557gty/f/+SjwlA4zj88MODvHLlyrztjz322CD37t275GMCgLoefvjhIK9evbpem+HDhwe5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AAAAABGYPAEAAABABCZPAAAAABChWa55+u1vfxvku+++O8jPPfdcg7cxY8aMILt7kAcMGBDkoUOHNnibAJqGdevWBfm+++5rpJHkNmTIkCBfffXVQf7oo4+CvNlmm5V9TACatr///e9B/uc//5m3/THHHBPktm3blnxMQFPDkScAAAAAiMDkCQAAAAAiMHkCAAAAgAjNcs3TaaedFuSampqSb+POO+/Mm3v27Bnk22+/Pci77rpryccEoDIeffTRID/55JNB/t///d9KDierd999N8iLFi0K8scffxxk1jwBLUu289FdfPHFRfVx3HHHBdnMGjQmoBpw5AkAAAAAIjB5AgAAAIAITJ4AAAAAIEKzWPN00EEHBTl9zqX169c3eBtdu3YNcnp9wLJly4L82muvBXm33XYL8meffdbgMQGojAULFgT56KOPDvIOO+wQ5LPPPrvsYypk6tSpjT0EAE3Y/Pnz6902e/bsvI9p1Sr82HjggQeWdExANeDIEwAAAABEYPIEAAAAABGYPAEAAABAhKpc8/T4448H+cUXXwxy+jwDxZ7n6Uc/+lG92w444IAgd+zYMciPPPJIkH/1q1/l3cYf/vCHII8ePbqYIQKooPT7OX2OpAkTJgS5Q4cOZR9TWvq8Tuk6yflXANSVPj9ljGHDhpVhJEB14cgTAAAAAERg8gQAAAAAEZg8AQAAAECEqljztHTp0iCnz7GycuXKovrr2bNnkI844oggn3/++fUe0759+7x99urVK8jXX399kNNjHDNmTJD//e9/B/nkk08OcuvWrfNuH0DpTJkyJcj33XdfkNPndUqfx60xXHzxxUFOr3HaZ599gtypU6dyDwlAE5ZeF5lNmzZtgnzJJZeUazhA1eDIEwAAAABEYPIEAAAAABGYPAEAAABAhKpY87R27dogF7vGaejQoUG+7bbbgty1a9eNG1gd6TVPZ599dpDPOOOMIH/00UdBTq+BGjlyZJB79+7d0CECiDR58uQgp9+vTeG8bOm1oBMnTgxyq1ZheT/nnHOCzDpKoGV58skng/zUU08VfEx6vffAgQNLOiagGnHkCQAAAAAiMHkCAAAAgAhMngAAAAAgQlWseSpW+pwrN998c5BLscapkPSapb/85S9BfvbZZ8s+BgBx3nvvvSA//fTTedv/+Mc/LudwoowfPz7I77zzTpD79esX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AzYwjDwBAAAAQAIaTwAAAACQgMYTAAAAACSg8QQAAAAACbhgBADU6PXXX4/iY489Norvv//+KO7Ro0cUr169OorfeOONqtv83e9+V/h6fhu9evWK4muuuSaKjznmmKrbBNBx/PCHP4zia6+9NopHjRoVxRdddFEU77PPPs2pGLCBYeQJAAAAABLQeAIAAACABDSeAAAAACABc54AoEbf+ta3orjcTW5Lvf3221E8dOjQKO7Xr1+r92y55ZaF63zvvfeiOH9T3fw2TzzxxCgePHhwFO+yyy6F2wPQvpYvX174+iGHHBLFzHECmoORJwAAAABIQOMJAAAAABLQeAIAAACABMx5krRkyZIoXrlyZasyv/rVr6J41qxZUbzRRnE7dPz48VG87777RvGOO+5YazUBtJNFixZF8bRp0wrLf+hDH4rim2++OYo/+tGPRnHv3r1brWPzzTcv3EZ+zlP+ni6TJk2K4vy9qSZOnBjFU6ZMieI+ffoUbh9A23rzzTejeJNNNoni/JwnAM3ByBMAAAAAJKDxBAAAAAAJaDwBAAAAQIINYs7TwoULo/jHP/5xFN9xxx1RvGLFirq3+eijj0Zx9+7do3jIkCFR/PGPfzyKr7rqqijOn9sMoO3k5xrk50WaWRSfffbZUTxy5MiG1yk/zzI/h+mf//xnFH//+9+P4vw8zi996UtRPGbMmDprCKAeL774YhTfcMMNUZyfSz18+PCm1wkAI08AAAAAkITGEwAAAAAkoPEEAAAAAAm6xJynBQsWRHF+TtOtt94axa+99lrh+gYNGtTquf333z+KW1paonjy5MlRvMcee0TxY489FsV/+9vfovjuu++O4l133TWK8/eNAtB23nnnncLXTzjhhCj++te/3sTapLn00kujeOrUqVH8l7/8JYrzcz+Z8wS0r4svvri9q1DVI488EsXLli0rLJ8/thk8eHDD6wQ0GyNPAAAAAJCAxhMAAAAAJKDxBAAAAAAJOuWcp6985StRnL9fSbX7NB1yyCFR/K//+q9RnJ8rIEmbbbZZ4Trz5/1ec801UfzFL34xiufNmxfF2267bRR/7Wtfi+Kjjz661Ta32WabwjoBaIzzzz+/8PW99967jWqy/kaPHh3F+RyVvzcdgPY1Y8aMwte//OUvN70OX/3qV6M4X6e///3vUfzWW28Vrm/LLbeM4gkTJkRx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\n",
      "text/plain": [
       "<Figure size 864x720 with 30 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#  绘制一个测试图像以及他们的预测标签和真实标签，预测正确蓝色和预测不正确红色。\n",
    "num_rows = 5\n",
    "num_cols = 3\n",
    "num_images = num_rows*num_cols\n",
    "plt.figure(figsize=(2*2*num_cols, 2*num_rows))\n",
    "for i in range(num_images):\n",
    "    plt.subplot(num_rows, 2*num_cols, 2*i+1)\n",
    "    plot_image(i, predicteds[i], y_test, x_test)\n",
    "    plt.subplot(num_rows, 2*num_cols, 2*i+2)\n",
    "    plot_value_array(i, predicteds[i], y_test)\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9\n"
     ]
    }
   ],
   "source": [
    "# 使用训练的模型对单个图像进行预测,从测试数据集抓取图像\n",
    "img = x_test[12]\n",
    "img = (np.expand_dims(img, 0))\n",
    "predictions_single = predicted_model.predict(img)\n",
    "plot_value_array(1, predictions_single[0], y_test)\n",
    "labels = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]\n",
    "plt.xticks(range(10), labels)\n",
    "plt.show()\n",
    "print(np.argmax(predictions_single))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
